﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL
Imports DevComponents.DotNetBar


Public Class ctrlNuevaEntrevista
    Private _llamador As frmMainMetro
    Private _bAlta As Boolean
    Private _oEntrevista As cEntrevista
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnAceptar.Text = _RM.GetString("btnAceptar")
        btnCancelar.Text = _RM.GetString("btnCancelar")

        lblTituloLugar.Text = _RM.GetString("strLugar") + ":"
        lblTituloEntrevistaHS.Text = _RM.GetString("strHS")

        groupEntrevistaTipo.Text = _RM.GetString("strTipoDeEntrevista")
        groupEntrevistaFecha.Text = _RM.GetString("strDiaDeLaEntrevista")
        groupEntrevistaHora.Text = _RM.GetString("strHora")

        checkEntrevistaRealizada.Text = _RM.GetString("strRealizada")

        tabEntrevistaDetalles.Text = _RM.GetString("strDesarrolloDeLaEntrevistaUP")
        tabEntrevistaObs.Text = _RM.GetString("strComentariosUP")


        lblTituloForm.Text = _RM.GetString("strNuevaEntrevista")

    End Sub

    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
    End Sub

    Private Function ValidarForm() As Boolean
        Dim bValido As Boolean = True

        If advTreeTipoEntrevista.SelectedNode Is Nothing Then bValido = False
        If dateFechaEntrevista.SelectedDate = Date.MinValue Then bValido = False
        If txtHora.Text.Trim = "" Then bValido = False
        If txtLugar.Text.Trim = "" Then bValido = False

        ValidarForm = bValido

    End Function

    Public Sub MostrarParaAlta(oSolicitud As cSolicitud)
        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        lblTituloForm.Text = _RM.GetString("strNuevaEntrevista")
        lblMensajes.Text = ""

        _bAlta = True

        _oEntrevista = Nothing
        _oEntrevista = New cEntrevista
        _oEntrevista.Soli_Numero = oSolicitud.Soli_Numero

        LlenarForm(Nothing)

        txtLugar.Focus()

    End Sub

    Public Sub MostrarParaEdicion(oEntrevista As cEntrevista)
        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        lblTituloForm.Text = _RM.GetString("strEditarEntrevista")
        lblMensajes.Text = ""

        _bAlta = False

        _oEntrevista = oEntrevista

        LlenarForm(oEntrevista)

        txtLugar.Focus()
    End Sub

    Private Sub LlenarForm(oAux As cEntrevista)

        advTreeTipoEntrevista.Nodes.Clear()

        CargarGrillaTipoEntrevista()

        If advTreeTipoEntrevista.Nodes.Count > 0 Then advTreeTipoEntrevista.SelectedIndex = 0

        If Not oAux Is Nothing Then
            PosicionarGrilla(advTreeTipoEntrevista, oAux.Tipo_Entrevista.TEnt_Codigo)
            dateFechaEntrevista.SelectedDate = oAux.Ent_Fecha
            txtHora.Text = oAux.Ent_Hora
            txtLugar.Text = oAux.Ent_Lugar
            checkEntrevistaRealizada.CheckValue = oAux.Ent_Realizada
            txtDetalle.Text = oAux.Ent_Detalle
            txtObservaciones.Text = oAux.Ent_Obs
        Else
            If advTreeTipoEntrevista.Nodes.Count > 0 Then advTreeTipoEntrevista.SelectedIndex = 1
            dateFechaEntrevista.SelectedDate = Date.Now
            txtHora.Text = ""
            txtLugar.Text = ""
            checkEntrevistaRealizada.CheckValue = False
            txtDetalle.Text = ""
            txtObservaciones.Text = ""
        End If

    End Sub

    Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
        Dim oAux As cEntrevista


        If ValidarForm() Then
            If _bAlta Then
                oAux = New cEntrevista

                oAux.Soli_Numero = _oEntrevista.Soli_Numero
                oAux.Ent_Numero = 0
                oAux.Tipo_Entrevista.TEnt_Codigo = Utils.Convert.ToInt16(advTreeTipoEntrevista.SelectedNode.Tag)
                oAux.Ent_Fecha = dateFechaEntrevista.SelectedDate
                oAux.Ent_Hora = txtHora.Text.Trim
                oAux.Ent_Lugar = txtLugar.Text.Trim
                oAux.Ent_Detalle = txtDetalle.Text.Trim
                oAux.Ent_Obs = txtObservaciones.Text.Trim

                Try
                    GestorEntrevista.Instance.Ingresar(oAux)
                    GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.EntrevistaNuevo))

                Catch ex As Excepciones.EntrevistaFalloAlta
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try
            Else
                oAux = New cEntrevista

                oAux.Soli_Numero = _oEntrevista.Soli_Numero
                oAux.Ent_Numero = _oEntrevista.Ent_Numero
                oAux.Tipo_Entrevista.TEnt_Codigo = Utils.Convert.ToInt16(advTreeTipoEntrevista.SelectedNode.Tag)
                oAux.Ent_Fecha = dateFechaEntrevista.SelectedDate
                oAux.Ent_Hora = txtHora.Text.Trim
                oAux.Ent_Lugar = txtLugar.Text.Trim
                oAux.Ent_Detalle = txtDetalle.Text.Trim
                oAux.Ent_Obs = txtObservaciones.Text.Trim

                Try
                    GestorEntrevista.Instance.Editar(oAux)
                    GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.EntrevistaModificacion))


                Catch ex As Excepciones.EntrevistaFalloEditar
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try

            End If


            _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
            _llamador.RefrescarGrillaEntrevistas(oAux.Soli_Numero)
        Else
            lblMensajes.Text = "Complete todos los datos requeridos..."
        End If
    End Sub

    Public Sub CargarGrillaTipoEntrevista()
        Dim oTipoEntrevista As cTipo_Entrevista
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeTipoEntrevista.BeginUpdate()

        advTreeTipoEntrevista.Nodes.Clear()

        Try
            colObjetos = GestorTipo_Entrevista.Instance.Consultar()

            If Not colObjetos Is Nothing Then

                For Each oTipoEntrevista In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oTipoEntrevista.TEnt_Codigo
                    oNode.Text = oTipoEntrevista.TEnt_Descrip

                    advTreeTipoEntrevista.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.Tipo_EntrevistaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeTipoEntrevista.EndUpdate()

        advTreeTipoEntrevista.Refresh()

    End Sub

    Private Sub PosicionarGrilla(gridAux As DevComponents.AdvTree.AdvTree, sTag As String)
        Dim nodeAux As DevComponents.AdvTree.Node

        If gridAux.Nodes.Count > 0 Then
            For Each nodeAux In gridAux.Nodes
                If nodeAux.Tag = sTag Then
                    gridAux.SelectedNode = nodeAux
                End If
            Next
        End If

    End Sub

End Class
